package com.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.user.dao.restaurant.CreatRestaurant;
import com.user.dao.restaurant.QueryMonthSales;
import com.user.dao.restaurant.QueryPageRestaurant;
import com.user.domain.Restaurant;
import com.user.utils.R;

/**
 * @author YU
 * @Description 针对表【restaurant】的数据库操作Service
 * @Date 2024-02-05 17:55:05
 */
public interface RestaurantService extends IService<Restaurant> {
    /**
     * 根据餐厅名称查询餐厅是否存在
     *
     * @param name 餐厅名称
     * @return 是否存在
     */
    boolean isRestaurantNameExist(String name);

    /**
     * 根据餐厅id查询餐厅是否存在
     *
     * @param id 餐厅id
     * @return 是否存在
     */
    boolean isRestaurantIdExist(Integer id);

    /**
     * 获取餐厅列表
     *
     * @param queryPageRestaurant 查询条件
     * @return 餐厅列表
     */
    R getRestaurantList(QueryPageRestaurant queryPageRestaurant);

    /**
     * 获取餐厅列表
     *
     * @param queryPageRestaurant 查询条件
     * @return 餐厅列表
     */
    R getRestaurantsList(QueryPageRestaurant queryPageRestaurant);

    /**
     * 获取餐厅月销售情况
     *
     * @param monthSales 查询条件
     * @return 餐厅月销售情况
     */
    R getRestaurantMonthSales(QueryMonthSales monthSales);

    /**
     * 获取餐厅月销售情况
     *
     * @param restaurantId 餐厅id
     * @return 餐厅月销售情况
     */
    R getRestaurantMonthlySales(Integer restaurantId);

    /**
     * 创建餐厅
     *
     * @param creatRestaurant 创建餐厅信息
     * @return 创建结果
     */
    R createRestaurant(CreatRestaurant creatRestaurant);

    /**
     * 获取所有餐厅
     *
     * @return 所有餐厅
     */
    R getAllRestaurant();

    /**
     * 更新餐厅状态
     *
     * @param restaurantId 餐厅id
     * @return 更新结果
     */
    R updateStatus(Integer restaurantId);

    /**
     * 预测未来菜品销量
     *
     * @param dishId 菜品id
     * @return 未来菜品销量
     */
    R getAfterSales(Integer dishId);

    /**
     * 推荐餐厅
     *
     * @param userId 用户id
     * @return 推荐餐厅
     */
    R recommendRestaurants(Integer userId);
}
